package com.jxtc.enterprise.employee.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.util.List;

@Schema(description = "微信小程序端根据订单状态查询订单信息列表中的每一项订单信息")
@Getter
@Setter
@ToString
public class WxOrderInfoVO {
    // 订单 ID
    @Schema(description = "订单 ID")
    private String orderId;

    // 订单总金额
    @Schema(description = "订单总金额")
    private Integer totalAmount;

    // 使用余额抵扣金额
    @Schema(description = "使用余额抵扣金额")
    private Integer deductionPrice;

    // 用户实际（微信）支付金额
    @Schema(description = "用户实际支付金额")
    private Integer userPaid;

    // 订单状态
    @Schema(description = "订单状态")
    private String orderStatus;

    // 订单中菜品总件数
    @Schema(description = "订单中菜品总件数")
    private Integer totalNum;

    // 下单时间
    @Schema(description = "下单时间")
    private String orderTime;

    /**
     * 菜品是否可以被选购，此字段当前仅在 用户点餐小程序，我的订单，已完成订单 中使用，作用是用来决定 是否可以通过 “再来一单” 再次购买此菜品
     * <p>
     * 当为1时，订单中心，已完成tab页，该订单上的“再来一点”按钮 可点击，其他值，“再来一点”按钮 置灰，不可以点击
     * </p>
     * 取值如下：
     * 1: 可以选购，可以通过再来一单，快捷选购
     * 2: 餐品已下架或已删除，不可 通过再来一单 选购
     * 3: 菜品未下架，未删除，但是当前时间点不供应，比如 已完成订单中展示的是 昨天午餐的订单，用户今天选购晚餐时，不能通过再来一单，选购本菜品，应该该菜品仅午餐供应
     */
    @Schema(description = "菜品是否可以被选购")
    private Integer canSelectFlag;

    /**
     * 对 canSelectFlag 取值进行文本描述，便于问题定位，取值如下：
     * - canSelectFlag 取值为 1 时，此字段值为: 可选购
     * - canSelectFlag 取值为 2 时，此字段值为: 菜品已下架或已删除，不可选购
     * - canSelectFlag 取值为 3 时，此字段值为: 仅午餐或晚餐供应，供餐时段不一致，不可选购
     * - canSelectFlag 取值为 4 时，此字段值为：再来一单功能已禁用
     */
    @Schema(description = "对 canSelectFlag 取值进行文本描述，便于问题定位")
    private String canSelectMessage;

    // 订单中的菜品信息列表
    @Schema(description = "订单中的菜品信息列表")
    private List<WxOrderItemVO> items;

    @Schema(description = "取餐码")
    private Integer pickUpCode;

    /**
     * 分配给订单的外卖柜 窗格的编号，比如 A1-1-25
     */
    private String lockerBoxCode;

    /**
     * 开柜门 按钮是否可以点击，是否置灰，true 为可以点击，false 不可点击，置灰
     */
    private boolean lockerBoxBtnEnabled;

    /**
     * 不是所有公司都配置了外卖柜，大多数用户的订单都不会分配外卖柜，因此，没有外卖柜的公司的用户的订单，用户小程序，不显示 编号+开外卖柜按钮
     */
    private boolean showOpenLockerBtn;

    @Schema(description = "是否展示取餐码，1 不显示，2 显示")
    private Integer pickUpCodeShowFlag;

    /**
     * 用户下单地址
     */
    private String createOrderAddress;

    public Double getTotalAmount() {
        return totalAmount * 1.0 / 100;
    }

    public Double getDeductionPrice() {
        return deductionPrice * 1.0 / 100;
    }

    public Double getUserPaid() {
        return userPaid * 1.0 / 100;
    }
}
